The present invention relates to a solid-state cache memory subsystem designed to be used primarily as an adjunct to long-term magnetic disk storage media. The cache memory is connected outboard of a conventional data transmission channel not specially designed for use with such a cache memory sub-system, such that the cache memory system is plug-compatible with and software transparent to a host computer. In particular, the invention is designed to operate in accordance with the cache memory subsystem which is the subject matter of copending patent application Ser. No. 325,346 filed Nov. 27, 1981 incorporated herein by reference. That application describes a cache memory subsystem which is operatively connected to storage director(s) which in turn are connected between a host computer at one point and the control modules at another. In turn the control modules connect to the actual disk drive. As is known in the art, the directors serve to interface the host with the control modules which in turn interface the directors to the disk drives. The control modules are selected in accordance with the particular type of disk drive used while the directors may be used with various types of control modules and hence with various types of disk drives. According to the invention of that application, the cache is adapted to be used with varying sorts of disk drives by connection to the director(s).
The function of the solid-state cache memory subsystem in the invention of the copending application referred to above is to store certain data which has been determined to be likely to be called for by the host in advance of an actual host request for that certain data. This determination is done in accordance with the invention disclosed in another copending application, Ser. No. 325,350 filed Nov. 27, 1981, also incorporated herein by reference. In a preferred embodiment of that invention, once it has been determined that a particular block of data is likely to be called for by the host, the entire disk track containing that block of data is brought into the cache memory for temporary storage in anticipation of its being called for by the host computer. Inasmuch as the cache memory subsystem must be adapted to cooperate with varying types of disk drives which in turn have varying amounts of data stored on a given track, means must be provided whereby the cache memory is as useful as is possible despite the fact that disk tracks of varying sizes will be stored therein track by track. For example, if it were assumed that the total cache memory was to contain 200 kilobytes (hereinafter 200 kb) of data, and the track length of a particular disk drive was 20 kb, 10 such tracks would fit into the cache. Stated slightly differently, the cache could be divided into ten 20-kb "frames". When, for example, all ten frames were full and it was desired to cache another track, a cache manager could then simply deallocate a frame, for example a frame containing the data which had been least recently used and then allocate that frame to the new track. However, if data stored on another type of disk drive having a track size of, say, 25 kb, were desired to be staged, it would be necessary to deallocate two adjacent 20 kb frames in order to accommodate a 25 kb track thus wasting 15 kb of space. Even assuming two adjacent frames could be deallocated without loss of useful data, the waste of space alone would clearly be undesirable. If on the other hand the entire solid-state memory were divided into one subportion or "domain" adapted to store only tracks of one size, and another subportion proportioned to storage of tracks of another size, the individual domains of the memory might be efficiently allocated. However, utility of this solution presupposes that the relative activity of the two sizes of tracks is constant over time, which cannot be expected to be the case. Thus, it is desirable that all area of the solid state memory be accessible to any track size supported by the cache in order that it can be most efficiently used. Finally, one could divide all track sizes into much smaller uniformly-sized "pages", e.g., 2 kb, which would fit fairly uniformly within the frames. However, this would require complex hardware to implement and would additionally reduce the efficiency of the cache as necessarily an individual disk track would tend to be stored on varying portions of the cache, which would entail substantial additional support, e.g. recall of the numerous storage locations of the portions of a given track.